﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ServiceSATT;
using ApplicationContext;

namespace UI_SATT
{
    public partial class FrmCategorias : Form , IListadoCategorias, IInterfazCategoria
    {
        string ImplementaCategorias = "CategoriaService";
        ICategoriaService CategoriaServicio;
        int IdActual;
        public FrmCategorias()
        {
            InitializeComponent();
        }

        private void FrmCategorias_Load(object sender, EventArgs e)
        {
            CategoriaServicio = (ICategoriaService)AppContext.Instance.GetObject(ImplementaCategorias);
            CategoriaServicio.Lista(this);
        }

        private void CboCategorias_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void btnNueva_Click(object sender, EventArgs e)
        {
            gbCategorias.Enabled = true;
            gbCategorias.Text = "Nueva";
            TxtDescripcion.Text = "";
            TxtEdadMax.Text = "";
            TxtEdadMin.Text = "";
            TxtDescripcion.Focus();
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (CboCategorias.SelectedIndex > -1)
            {
                gbCategorias.Enabled = true;
                gbCategorias.Text = "Modificar";
                TxtDescripcion.Text = CboCategorias.SelectedItem.ToString();
                CategoriaServicio.Obtener(this);
                TxtDescripcion.Focus();
            }
            else
                MessageBox.Show("Seleccione una Categoria de la lista para modificar.");
        }

        private void btnGuardarCambios_Click(object sender, EventArgs e)
        {
            if (TxtDescripcion.Text != "" && TxtEdadMax.Text != "" && TxtEdadMin.Text != "")
            {
                if (gbCategorias.Text == "Nueva")
                    CategoriaServicio.Agregar(this);
                else
                    CategoriaServicio.Actualizar(this);
                this.LimpiarCampos();
                CategoriaServicio.Lista(this);
            }
        }

        private void LimpiarCampos()
        {
            TxtDescripcion.Text = "";
            TxtEdadMax.Text = "";
            TxtEdadMin.Text = "";
            gbCategorias.Text = "";
            gbCategorias.Enabled = false;
            CboCategorias.SelectedIndex = -1;
        }

        #region Miembros de IListadoCategorias

        public List<string> Lista
        {
            set 
            { 
                CboCategorias.DataSource = value;
                CboCategorias.SelectedIndex = -1;
            }
        }

        #endregion

        #region Miembros de IInterfazCategoria

        public int Id
        {
            get
            {
                return IdActual;
            }
            set
            {
                IdActual = value;
            }
        }

        public string Nombre
        {
            get
            {
                return TxtDescripcion.Text;
            }
            set
            {
                TxtDescripcion.Text = value;
            }
        }

        public int EdadMin
        {
            get
            {
                return int.Parse(TxtEdadMin.Text);
            }
            set
            {
                TxtEdadMin.Text = value.ToString();
            }
        }

        public int EdadMax
        {
            get
            {
                return int.Parse(TxtEdadMax.Text);
            }
            set
            {
                TxtEdadMax.Text = value.ToString();
            }
        }

        #endregion

        private void TxtEdadMin_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsNumber(e.KeyChar) || e.KeyChar == 8)
                e.Handled = false;
            else
                e.Handled = true;
        }

        private void TxtEdadMax_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsNumber(e.KeyChar) || e.KeyChar == 8)
                e.Handled = false;
            else
                e.Handled = true;
        }

        private void CboCategorias_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (CboCategorias.SelectedIndex > -1)
                btnModificar.Enabled = true;
            else
                btnModificar.Enabled = false;
        }
    }
}
